package wheel.arithmetic;

import java.util.ArrayList;
import java.util.List;

/**
 * 直接比较
 */
public class DirectMin {

    List<DataQueue> dataQueues;

    public DirectMin(List<DataQueue> dataQueues) {
        this.dataQueues = dataQueues;
    }

    public Long poll() {
        Integer emptyQueueIndex = null; Integer pollQueueIndex = null;
        Long minValue = null;

        if(dataQueues.isEmpty()){
            return null;
        }
        for(int i=0; i<dataQueues.size();i++){
            Long value = dataQueues.get(i).peek();
            if(value==null){
                emptyQueueIndex = i;
                continue;
            }
            if(minValue==null){
                minValue = value;
                pollQueueIndex = i;
            }
            if(minValue > value) {
                minValue = value;
                pollQueueIndex = i;
            }
        }


        if(pollQueueIndex!=null) {
            dataQueues.get(pollQueueIndex).remove();
        }
        if(emptyQueueIndex!=null) {
            DataQueue queue = dataQueues.get(emptyQueueIndex);
            dataQueues.remove(queue);
            System.err.println("一个队列被移除了！！！！！ emptyQueueIndex-> "+emptyQueueIndex+", serialNum-> "+queue.getSerial()+", readCount-> "+queue.getReadCount());
        }
        return minValue;
    }
}
